package ui.swing.graphics;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.SystemColor;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;

import javax.swing.JPanel;

import ui.swing.Console;

// 圆形和椭圆
public class DrawPanel extends JPanel{

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D)g;
		
		// Color实现了Paint接口，可以使用这个方法将绘制属性设置为纯色
		g2.setPaint(Color.blue);
		
		// draw a string
		Font sansbold14  = new Font("SansSerif", Font.BOLD, 14);
		g2.setFont(sansbold14);
		String message = "又是Hello World";
		g2.drawString(message, 50, 50);
		
		// draw a rectangle
		double leftX = 100;
		double topY = 100;
		double width = 200;
		double height = 150;
		
		Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
		g2.draw(rect);
		
		// draw a enclosed ellipse
		Ellipse2D ellipse = new Ellipse2D.Double(leftX, topY, width, height);
		ellipse.setFrame(rect);
		g2.fill(ellipse);
		
		// draw a diagonal line
		g2.draw(new Line2D.Double(leftX, topY, leftX + width, topY +height));
		
		// draw a circle with the same center
		double centerX = rect.getCenterX();
		double centerY = rect.getCenterY();
		double radius = 150;
		
		Ellipse2D circle = new Ellipse2D.Double();
		circle.setFrameFromCenter(centerX, centerY, centerX + radius, centerY + radius);
		g2.draw(circle);
	}
	
	public static void main(String[] args) {
		JPanel pnl = new DrawPanel();
		pnl.setBackground(SystemColor.window);
		Console.run(pnl, 500, 500);
	}
}
